namespace SmartMathLibrary
{
    /// <summary>
    /// Interface to implement a ComplexLinearFactor class.
    /// </summary>
    public interface IComplexLinearFactor
    {
        /// <summary>
        /// Gets or sets the summate of the linear factor.
        /// </summary>
        /// <value>The summate of the linear factor.</value>
        ComplexNumber Summat { get; set; }

        /// <summary>
        /// Gets or sets the name of the variable.
        /// </summary>
        /// <value>The name of the variable.</value>
        string VariableName { get; set; }

        /// <summary>
        /// Converts the linear factor to a polynomial.
        /// </summary>
        /// <returns>The converted linear factor.</returns>
        ComplexPolynomial ToPolynomial();

        /// <summary>
        /// Compares the current instance of a linear factor to another.
        /// </summary>
        /// <param name="factor">The factor.</param>
        /// <returns>True if the two factors are even otherwise, false.</returns>
        bool CompareTo(ComplexLinearFactor factor);
    }
}